package gf

import "fmt"

// NewFile 创建并初始化一个ApiFileStatus实例，用于表示文件状态。
// 参数 filename: 指定文件的名称。
// 返回值: 返回一个指向ApiFileStatus结构的指针，该结构包含了文件的各种状态信息。
func NewFile(filename string) *FileStatus {
	// 创建ApiFileStatus结构体实例。
	f := new(FileStatus)

	// 初始化结构体成员变量。
	f.Success = false     // 操作成功标志，默认为false。
	f.AbsPath = ""        // 文件的绝对路径，默认为空字符串。
	f.FileName = filename // 文件名，赋值为传入的参数filename。
	f.FileList = nil      // 文件列表，初始化为空。
	f.DirList = nil       // 目录列表，初始化为空。
	f.Err = nil           // 错误信息，初始化为空。
	f.Text = ""           // 文本信息，初始化为空字符串。
	f.IsDirs = false      // 是否为目录标志，默认为false。
	f.IsFiles = false     // 是否为文件标志，默认为false。
	f.ExIst = false       // 存在性标志，默认为false。

	// 以下两个字段在示例代码中被注释掉，因此未进行初始化。
	// f.open = nil
	// f.stat = nil

	f.Perm = 0666 // 文件权限，初始化为0666。

	// 初始化FileErr结构体，用于定义与文件相关的错误信息。
	f.FileErr = new(FileErr)
	f.FileErr.PathIsFile = fmt.Errorf("这是一个文件")      // 指定路径是一个文件的错误信息。
	f.FileErr.FileIsNotExists = fmt.Errorf("该路径不存在") // 文件不存在的错误信息。
	f.FileErr.PathIsdir = fmt.Errorf("这是一个文件夹")      // 指定路径是一个目录的错误信息。

	// 返回初始化后的ApiFileStatus结构体实例的指针。
	return f
}

// NewFileMan 创建并初始化一个新的 FileMan 实例,用于管理文件的复制,移动,删除
//
// 该函数接收两个字符串参数：
//
// src 和 dst，分别代表源文件路径和目标文件路径。
func NewFileMan(src, dst string) *FileMan {
	f := new(FileMan)
	f.Src = src
	f.Dst = dst
	return f
}

// NewReadFile 创建并初始化一个ApiReadScreen对象用于读取指定的文件。
// 参数 filename 指定要读取的文件名。
// 返回值是一个指向ApiReadScreen对象的指针，该对象的FileName字段被设置为传入的filename。
func NewReadFile(filename string) *ReadScreen {
	// 新建ApiReadScreen对象
	f := new(ReadScreen)
	// 设置对象的FileName字段为传入的文件名
	f.FileName = filename
	// 返回初始化后的对象指针
	return f
}

// NewHandle 创建并返回一个新的Handle实例,用于处理字符串
// 该函数接收一个字符串参数text，该参数用于初始化Handle实例的Text和texts字段。
// 返回值是一个指向Handle实例的指针，其Text和texts字段都被设置为传入的text值。
func NewHandle(text string) *Text {
	// 使用new函数在内存中分配一个Handle类型的实例，并将其实例化。
	// new函数返回的是指向该实例的指针。
	f := new(Text)
	// 初始化Handle实例的Text字段为传入的text值。
	f.Text = text
	// 同样，初始化Handle实例的texts字段为传入的text值。
	f.texts = text
	// 返回初始化完毕的Handle实例指针。
	return f
}
